home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / Libraries / SAT 2.3.7 / TCL and demo / SATTest / sTarget.p < prev   
Encoding:
Text File  |  1995-12-18  |  1.5 KB  |  76 lines  |  [TEXT/PJMM]

  1. {****************************************************}
  2. {}
  3. {        sTarget.p                                                                                                                                                                                                                }
  4. {}
  5. {        Sprite for the player. Based on the Assignments from the Tutorial.                                    }
  6. {}
  7. {****************************************************}
  8.  
  9.  
  10. unit sTarget;
  11.  
  12. interface
  13.  
  14.     uses
  15.         SAT, SATTestGlobals;
  16.  
  17.     procedure SetupTarget (me: SpritePtr);
  18.  
  19.     procedure HandleTarget (me: SpritePtr);
  20.  
  21.     procedure HitTarget (me, him: SpritePtr);
  22.  
  23. implementation
  24.  
  25.     uses
  26.         sPlayer;
  27.  
  28.     const
  29.         kSpeed = 5;
  30.  
  31.     var
  32.         direction: Integer;
  33.  
  34.  
  35.     procedure HandleTarget (me: SpritePtr);
  36.  
  37.     begin { HandleTarget }
  38.         me^.position.h := me^.position.h + direction;
  39.         if me^.position.h <= 0 then
  40.             direction := kSpeed;
  41.         if me^.position.h >= 200 then
  42.             direction := -kSpeed;
  43.     end; { HandleTarget }
  44.  
  45.  
  46.     procedure HitTarget (me, him: SpritePtr);
  47.         var
  48.             savePort: SATPort;
  49.             r: Rect;
  50.             ignore: SpritePtr;
  51.  
  52.     begin { HitTarget }
  53.         if him^.task = @HandlePlayer then {Chack what we hit!}
  54.             begin
  55.                 me^.task := nil;
  56.                 ignore := SATNewSprite(-1, 0, SATRand(gSAT.offSizeV - 32), @SetupTarget);
  57. {We could also re-use the old sprite for a new one, if we like.}
  58.                 SATSoundPlay(gCatchSound, 1, TRUE);
  59.  
  60.             end;
  61.     end; { HitTarget }
  62.  
  63.  
  64.     procedure SetupTarget (me: SpritePtr);
  65.  
  66.     begin { SetupTarget }
  67.         me^.task := @HandleTarget;
  68.         me^.hitTask := @HitTarget;
  69.         me^.face := SATGetFace(129);
  70.         me^.kind := kindTarget;
  71.         SetRect(me^.hotRect, 0, 0, 32, 32);
  72.         direction := kSpeed;
  73.     end; { SetupTarget }
  74.  
  75.  
  76. end. { sTarget }